﻿using System.ComponentModel;
using StockholmsStad.Utilities.Exceptions;

namespace StockholmsStad.Utilities.Enums
{
    /// <summary>
    /// Den felkod som anger vilken typ av <see cref="StockholmStadApplicationException"/> som inträffat. 
    /// </summary>
    public enum ApplicationErrorCode
    {
        /// <summary>
        /// Allvarligt fel från databasen som att databasen inte är tillgänglig eller 
        /// kastar allvarliga fel av typen transaktionsfel.
        /// </summary>
        [Description("Allvarligt Systemfel. \nKontakta systemadministratör.")]
        DataConnectionFailure,

        /// <summary>
        /// Runtime fel i applikationen som förhindrar fortsatt körning av applikationen
        /// </summary>
        [Description("Ett allvarligt fel uppstod. \nSystemet måste startas om")]
        ApplicationRuntimeException,

        /// <summary>
        /// Servicekontraktfel
        /// </summary>
        [Description("Ett allvarligt fel uppstod. \nSystemet måste startas om")]
        ServiceContractException,

        /// <summary>
        /// Användaren är icke behörig
        /// </summary>
        [Description("Du är inte behörig att logga in. \nFörsäkra dig om att du har angett rätt användarnamn och lösenord. Om du trots detta inte kan logga in var vänlig kontakta systemadministatören.")]
        UserNotAuthorized,

        /// <summary>
        /// 
        /// </summary>
        [Description("Ett allvarligt fel uppstod. \nKontakta systemadministratör")]
        UnknownError,

        /// <summary>
        /// Connectionsträngen saknas eller innehöll något fel. 
        /// </summary>
        [Description("Connectionsträngen saknas eller innehöll något fel. \nKontakta systemadministratör")]
        ConnectionStringMissing,

        /// <summary>
        /// Connectionsträngen saknas eller innehöll något fel. 
        /// </summary>
        [Description("AppSetting innehåller fel. \nKontakta systemadministratör")]
        AppSettingKeyMissing,

    }
}
